This disclosure relates generally to migrating active input/output (I/O) connections and, more particularly to techniques for migrating active I/O connections with migrating virtualized I/O servers and/or I/O clients.
InfiniBand (IB) is a switched fabric communications link that has been employed in high performance computing (HPC) applications. Similar to Fibre channel (FC), peripheral component interconnect (PCI) express, and serial advanced technology attachment (ATA), as well as other modern interconnects, IB offers point-to-point bidirectional serial links for connecting processors with high-speed peripherals, e.g., disks. Today, FC is widely used as the standard connection type for storage area networks (SANs). FC protocol (FCP) is a transport protocol (similar to transmission control protocol (TCP) used in Internet protocol (IP) networks) that predominantly transports small computer system interface (SCSI) commands over FC networks. FC supports a number of upper layer protocols, including SCSI, asynchronous transfer mode (ATM), and IP. The SCSI standards define commands, protocols, and electrical and optical interfaces. SCSI is most commonly used for hard disks and tape drives, but can connect a wide range of other devices, e.g., scanners and compact disc (CD) drives.
Unlike FC, which has traditionally required special-purpose cabling, Internet SCSI (iSCSI) can be run over relatively long distances using many existing network infrastructures. iSCSI is an IP-based storage networking standard for linking data storage facilities. iSCSI can be used to transmit data over local area networks (LANs), wide area networks (WANs), or the Internet and facilitates location-independent data storage and retrieval. iSCSI is a popular SAN protocol that allows organizations to consolidate storage into data center storage arrays, while providing hosts (such as database and web servers) with the illusion of locally-attached disks. A SAN architecture is typically used to attach remote computer storage devices (e.g., disk arrays, tape libraries, and optical jukeboxes) to servers in such a way that the devices appear locally attached, with respect to an operating system (OS). A SAN only provides block-level operations, as contrasted with file abstraction. However, file systems may be built on top of SANs to provide file abstraction. In contrast to SANs, network attached storage (NAS) uses file-based protocols, where it is clear that the storage is remote and computers request a portion of an abstract file rather than a disk block. NAS provides both storage and a file system, in contrast to SANs, which typically provide only block-based storage and leave file system concerns to the client-side. Protocols employed in SANs include SCSI, FC, iSCSI, advanced technology attachment (ATA), and ATA over Ethernet (AoE), among other protocols. Despite their differences, SANs and NAS are not mutually exclusive, and may be combined, offering both file-level protocols and block-level protocols from the same system.
I/O virtualization is a methodology that is typically implemented to simplify management, lower costs, and improve performance of servers. I/O virtualization environments are created by abstracting upper layer protocols from physical connections. I/O virtualization enables one physical adapter card to appear as multiple virtual network interface cards (vNICs) and virtual host bus adapters (vHBAs). vNICs and vHBAs function as conventional NICs and HBAs and are designed to be compatible with existing OSs, hypervisors, and applications. To networking resources (e.g., LANs and SANs), the vNICs and vHBAs appear as normal cards and adapters. Virtual I/O provides a shared transport for all network and storage connections. Virtual I/O addresses performance bottlenecks by consolidating I/O to a single connection, whose bandwidth ideally exceeds the I/O capacity of an associated server (to ensure that an associated I/O link is not a bottleneck). Bandwidth is then dynamically allocated in real-time across multiple virtual connections to both storage and network resources. In I/O intensive applications, I/O virtualization can help increase both virtual machine (VM) performance and the number of VMs that may execute on a given server.
Storage virtualization refers to the process of abstracting logical storage from physical storage. In general, physical storage resources are aggregated into storage pools, from which logical storage is created. Storage virtualization presents a logical space for data storage and transparently handles the process of mapping the logical space to the actual physical location. Storage virtualization is typically implemented in modern disk arrays using vendor proprietary solutions. However, the goal of storage virtualization is usually to virtualize multiple disk arrays from different vendors, scattered over a network, into a single monolithic storage device, which can be managed uniformly.
File systems, which are the most common means of accessing disk storage, are abstractions of a physical storage object (e.g., rotating magnetic media, solid state electronic devices, directory structured magnetic tapes) into a more human friendly format, where data can be organized into files, folders and other similar objects. Many modern OSs, including those derived from the UNIX or Windows OSs, abstract the final connection between the file system into, for example, a device switch, a device array, or a device control block. Each physical device, as well as each type of physical device (which may also include network connected storage, virtualized disk storage, etc.) has a different handle, identifier, or other type of object. These data structures or objects include the information needed by the OS or disk I/O subsystem to convert requests for disk I/O into actual data transfer (i.e., either reading or writing).